/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package LogicaNegocio.Controlador;

import AccesoDatos.Persistencia.Manager.ManagerEjemplar;
import AccesoDatos.Persistencia.Manager.ManagerInformes;
import AccesoDatos.Persistencia.Manager.ManagerLibro;
import GUI.Bibliotecario.AdminEjemplares.PanelRegistrarEjemplar;
import LogicaNegocio.Biblioteca.Ejemplar;
import LogicaNegocio.Biblioteca.Libro;
import LogicaNegocio.Validacion.VBiblioteca;
import javax.swing.JOptionPane;

/**
 * Esta clase en java se encarga de controlar
 * los eventos generados por la interfaz grafica
 * registro de ejemplares.
 *
 * @author sebaxtian
 * Archivo: ControlRegistrarEjemplar.java
 * @version 1.0
 * Fecha: jue may 20 13:38:56 COT 2010
 */


public class ControlRegistrarEjemplar {

    //Atributos de clase
    private PanelRegistrarEjemplar panelRegistrarEjemplar;
    private ManagerEjemplar gestorEjemplar;
    private ManagerLibro gestorLibro;
    private ManagerInformes gestorInformes;


    public ControlRegistrarEjemplar(PanelRegistrarEjemplar panelRegistrarEjemplar) {
        this.panelRegistrarEjemplar = panelRegistrarEjemplar;
        gestorEjemplar = new ManagerEjemplar();
        gestorLibro = new ManagerLibro();
        gestorInformes = new ManagerInformes();
    }

    public void registrar() {
        Long isbn = -1L;
        int numeroCajon = -1;
        int numeroEstante = -1;
        int numeroPasillo = -1;
        int numeroSala = -1;
        Libro libro = null;
        try {
            isbn = Long.parseLong(panelRegistrarEjemplar.textFieldISBN.getText());
            numeroCajon = Integer.parseInt(panelRegistrarEjemplar.textFieldNumeroCajon.getText());
            numeroEstante = Integer.parseInt(panelRegistrarEjemplar.textFieldNumeroEstante.getText());
            numeroPasillo = Integer.parseInt(panelRegistrarEjemplar.textFieldNumeroPasillo.getText());
            numeroSala = Integer.parseInt(panelRegistrarEjemplar.textFieldNumeroSala.getText());
            libro = gestorLibro.obtenerLibro(isbn);
        } catch (NumberFormatException ex) {
            JOptionPane.showMessageDialog(panelRegistrarEjemplar, "Los datos ingresados deben ser numero enteros", "Error Datos", JOptionPane.ERROR_MESSAGE);
        }
        if(libro != null){
            try {
                Ejemplar ejemplar = new Ejemplar();
                ejemplar.setDisponible(true);
                ejemplar.setIsbn(isbn);
                ejemplar.setNumeroCajon(numeroCajon);
                ejemplar.setNumeroEstante(numeroEstante);
                ejemplar.setNumeroPasillo(numeroPasillo);
                ejemplar.setNumeroSala(numeroSala);
                //valida el ejemplar
                new VBiblioteca(ejemplar);
                //si los datos son corrector
                if(!gestorInformes.existeEjemplar(numeroSala, numeroPasillo, numeroEstante, numeroCajon)){
                    gestorEjemplar.crearEjemplar(ejemplar);
                    //informa
                    JOptionPane.showMessageDialog(panelRegistrarEjemplar, "El nuevo ejemplar ha sido registrado con exito", "Registrar", JOptionPane.PLAIN_MESSAGE);
                    limpiar();
                }else{
                    JOptionPane.showMessageDialog(panelRegistrarEjemplar, "Ya existe una referencia para el ejemplar : "+numeroSala+"/"+numeroPasillo+"/"+numeroEstante+"/"+numeroCajon, "Registrar", JOptionPane.INFORMATION_MESSAGE);
                }
            } catch (VBiblioteca ex) {
                JOptionPane.showMessageDialog(panelRegistrarEjemplar, ex.getMessage(), "Error Datos", JOptionPane.INFORMATION_MESSAGE);
            }
        }else{
            JOptionPane.showMessageDialog(panelRegistrarEjemplar, "No existe un libro con ISBN "+isbn+" registrado", "Registrar", JOptionPane.INFORMATION_MESSAGE);
        }
    }

    private void limpiar() {
        panelRegistrarEjemplar.textFieldISBN.setText("");
        panelRegistrarEjemplar.textFieldNumeroCajon.setText("");
        panelRegistrarEjemplar.textFieldNumeroEstante.setText("");
        panelRegistrarEjemplar.textFieldNumeroPasillo.setText("");
        panelRegistrarEjemplar.textFieldNumeroSala.setText("");
    }
}
